﻿#ifndef MYTCPSOCKET_H
#define MYTCPSOCKET_H

#pragma once
#include <QObject>
#include <QTcpSocket>
#include <QDebug>
#include "opdb.h"
#include <QMessageBox>
#include <QFile>
#include <QDir>
#include <QDataStream>

class MyTcpSocket:public QTcpSocket
{
    Q_OBJECT
public:
    MyTcpSocket();
    QString getUserInfo();//获取用户信息
signals:
    void LogOut(MyTcpSocket* sock);
public slots:
    void recvMsg();
    void handlerLogOut();//处理下线的客户端
    void handleRegister();//处理客户端注册
    void handleLogin();//处理登陆
    void handleAddFriend(const char* name);//处理加好友
    void handleAddFriendAgree(PDU* pdu);//处理好友添加成功
    void handleTransMsg();//处理客户端到客户端的消息转发
    void handleTransFile();//处理客户端到客户端的文件传输
    void handleFindPwd(PDU* pdu);//有客户端想找回密码
    void handlerResetPwd(PDU* pdu);//处理重置密码
    void handlerFindInfo(PDU* pdu);//查询用户信息
    void handlerOffLineLog(PDU *pdu);
    void handlerRegGroup();
    void handlerLoadGPerson(QString gname);//加载群成员
    void handlerGroupMsg(PDU* pdu);
    QList<userInfo>  selectFriend(MyTcpSocket* sock,userInfo u);//将在线好友转发给对应请求人
    static MyTcpSocket& getInstance();
private:
    userInfo m_u;//记录用户 用来用户处理下线
    userInfo m_addU;//用来处理添加好友
    QFile m_file;//辅助写入群文件

};

#endif // MYTCPSOCKET_H
